package com.william.jdbcplus.core.dialect.ddl.pk;

import com.william.jdbcplus.common.entity.Entity;
import com.william.jdbcplus.core.meta.TablePkInfo;
import com.william.jdbcplus.core.util.datameta.TableMetaPkInfo;

/**
 * 主键接口
 *
 * @author william
 */
public interface IPk {
    /**
     * 新增主键
     *
     * @param clazz
     * @param <M>
     * @return
     */
    <M extends Entity> String add(Class<M> clazz, TablePkInfo pkInfo);

    /**
     * 修改主键
     *
     * @param clazz
     * @param pkInfo
     * @param <M>
     * @return
     */
    <M extends Entity> String modify(Class<M> clazz, TablePkInfo pkInfo);

    /**
     * 删除主键
     *
     * @param clazz
     * @param <M>
     * @return
     */
    <M extends Entity> String drop(Class<M> clazz, TablePkInfo pkInfo);

    /**
     * 检查是否与数据库一致
     */
    <M extends Entity> Boolean match(Class<M> clazz, TablePkInfo pkInfo, TableMetaPkInfo metaPkInfo);
}
